Python(爬虫篇) |
您所在的位置:网站首页 › python jsencrypt解密 › Python(爬虫篇) |
文章目录
一、简介JS加密的分析步骤:
二、案例:有道翻译步骤一:常规操作。找到url,简单分析步骤二:更改参数为变量,找到参数变化规律步骤三:(关键一步)使用Python代码生成sign
一、简介
“加密”的过程,就是把“明文”变成“密文”的过程。反之:“解密”的过程,就是把“密文” 变为“明文”。网页数据加密的方式有很多种,比如:JS 加密、Base64 加密、CSS 加密等。 下面让我们一起来探讨一下JS加密!并借助于案例感受解密思维逻辑。 JS加密:是一个非常常见的加密,大部分的页面都会存在 JS加密一般都是对参数进行加密(比如:salt、sign、token、signature等) JS加密的分析步骤: 找到哪些参数在影响数据的获取? 需要做不同的请求,对比参数,找出不同的参数即可找到参数之后,需要查找这些参数从哪里获得的/生成的原理是什么? (1) 这些参数可能是通过之前的一些请求传递过来的 (2) 参数是在某个JS文件中生成的 —> 找出对应的JS文件,分析JS代码,得到参数生成的原理 二、案例:有道翻译需求:用户输入,得到翻译 步骤一:常规操作。找到url,简单分析
发现问题: 单词只能查询as,其余单词的都不行 此时判定为使用了JS加密,故去网页中的JS文件查找 通过查找,发现sign所在的位置及代码 找到目标参数,分析代码 var r = function(e) { var t = n.md5(navigator.appVersion) , r = "" + (new Date).getTime() , i = r + parseInt(10 * Math.random(), 10); return { ts: r, bv: t, salt: i, sign: n.md5("fanyideskweb" + e + i + "]BjuETDhU)zqSxf-=B#7m") } };分析结果: sign是经过md5加密后的值,加密参数有e,i两个 其中e可以发现是我们输入的单词 i也就是salt,是由r一级一位随机数组成,其中的r是时间戳。 步骤三:(关键一步)使用Python代码生成sign salt = str(int(round(time.time()*1000))) + str(random.randint(0,9)) # 获取sign def get_sign(sign): # 1. 初始化md5 md5 = hashlib.md5() # 2. 加密 md5.update(sign.encode('utf-8')) # 3. 返回加密数据 return md5.hexdigest() sign = get_sign("fanyideskweb" + word + salt + "]BjuETDhU)zqSxf-=B#7m")步骤四:更改参数字典,完成需求 # 定义参数字典 data = { 'i': word, 'from': 'AUTO', 'to': 'AUTO', 'smartresult': 'dict', 'client': 'fanyideskweb', 'salt': salt, 'sign': sign, 'lts': str(int(round(time.time()*1000))), 'bv': '1dfc4dfa8627abec379e26d41735b09a', 'doctype': 'json', 'version': '2.1', 'keyfrom': 'fanyi.web', 'action': 'FY_BY_REALTlME', } |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |